home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / EGAVGA.SWG / 0034_STARS2.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  1KB  |  87 lines

  1. { DANIEL SCHLENZIG }
  2.  
  3. Program stars;
  4.  
  5. Const
  6.   maxstars = 200;
  7.  
  8. Var
  9.   star  : Array[0..maxstars] of Word;
  10.   speed : Array[0..maxstars] of Byte;
  11.   i     : Word;
  12.  
  13. Procedure create;
  14. begin
  15.   For i := 0 to maxstars do
  16.   begin
  17.     star[i]  := random(320) + random(200) * 320;
  18.     speed[i] := random(3) + 1;
  19.     if mem[$a000 : star[i]] = 0 then
  20.       mem[$a000 : star[i]] := 100;
  21.   end;
  22. end;
  23.  
  24. Procedure moveit; Assembler;
  25. Asm
  26.   xor   bp,bp
  27.   mov   ax,0a000h
  28.   mov   es,ax
  29.   lea   bx,star
  30.   lea   si,speed
  31.   mov   cx,320
  32.  
  33.  @l1:
  34.   mov   di,[bx]
  35.   mov   al,es:[di]
  36.   cmp   al,100
  37.   jne   @j1
  38.   xor   al,al
  39.   stosb
  40.  @j1:
  41.   mov   al,[si]
  42.   xor   ah,ah
  43.   add   [bx],ax
  44.   mov   ax,bx
  45.   xor   dx,dx
  46.   div   cx
  47.   mul   cx
  48.   mov   dx,bx
  49.   sub   dx,ax
  50.   cmp   dx,319
  51.   jle   @j3
  52.   sub   [bx],cx
  53.  @j3:
  54.   mov   di,[bx]
  55.   mov   al,es:[di]
  56.   or    al,al
  57.   jnz   @j2
  58.   mov   al,100
  59.   stosb
  60.  @j2:
  61.   add   bx,2
  62.   inc   si
  63.   inc   bp
  64.   cmp   bp,maxstars
  65.   jle   @l1
  66.  end;
  67.  
  68. begin
  69.   Asm
  70.     mov   ax,13h
  71.     int   10h
  72.     call  create
  73.  
  74.    @l1:
  75.     mov   dx,3dah
  76.    @r1:
  77.     in    al,dx
  78.     test  al,8
  79.     je    @r1
  80.  
  81.     call moveit
  82.     in   al,60h
  83.     cmp  al,1
  84.     jne  @l1;
  85.   end;
  86. end.
  87.